package features.advance.jdk.tutorials;

import java.util.HashMap;

/**
 * @author LIN
 * @date 2023-02-10 17:13
 */
public class InnerClassAnonymousClass {

    public static void main(String[] args) {
        TestCase.test_double_brace_initialization();


    }


    public static class TestCase{
        public static void test_double_brace_initialization(){

            /**
             * 局部类
             * 局部类是在方法体内声明的内部类
             */
            class localClass{}

            abstract class Aa {
                public Aa(){
                    System.out.println("新建一个A对象");
                }
                protected void initial(String arg){
                    System.out.println("初始化"+arg);
                }

            }

            /**
             * 匿名类是在方法体内声明且未命名的内部类，即没有命名的局部类。
             */
            new HashMap(16) {
                // 实例初始化块
                {


                }
                //Java 编译器会将实例初始化块复制到每个构造函数中，
                // 故实例初始化块可用于在多个构造函数之间共享代码块。


            };// 因为匿名类是表达式，故它必须是语句的一部分，所以在闭合的大括号后会有一个分号

            new Aa(){
                {
                    System.out.println("静态代码块");
                    initial("test");
                }
            };
        }
    }
}
